// 使用open write close的形式去创建一个大文件,
// 内容随机写点数据,计算出这个大文件出现最多的字符.


// 创建大文件
let fs=require("fs");
// fs.existsSync()方法用于同步检查给定路径中是​​否已存在文件。
// 它返回一个布尔值，该值指示文件的存在。

//  fs.mkdirSync()方法用于同步创建目录。
// 用法
// fs.mkdirSync( path, options )
if (!fs.existsSync("bigdate")) fs. mkdirSync("bigdate");
let str ="adsfghjkl";
// getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。
let startAt=new Date().getTime();
// fs.openSync() 方法是 fs 模块的内置应用程序编程接口，
// 用于返回表示文件描述符的整数值
// 语法：fs.openSync( path, flags, mode )
let fd=fs.openSync("./bigdate/big.txt","a");
for(let i=0;i<1000;i++){
    // slice()函数是Node.js的字符串函数，用于从字符串中提取子字符串
    // 用法:string.slice( start, end )
    // floor() 方法返回小于等于x的最大整数
    fs.writeSync(fd,str.slice(Math.floor(Math.random()*(str.length-1))),str.length-1);
}
// fs.closeSync()方法用于同步关闭给定的文件描述符，从而清除与之关联的文件
// 用法:fs.closeSync( fd )
 fs.closeSync(fd);
 let endAt=new Date().getTime();
 console.log(fd);
//  取出最多的字符
let chatArray=[];
// createReadStream()方法是fs模块的内置应用程序编程接口，
// 使您可以打开文件/流并读取其中的数据。
// 用法:fs.createReadStream( path, options ) path 路径
let readStream=fs.createReadStream("./bigdate/big.txt");
// 数据是读到一部分数据(chunk)就返回.
readStream.on("date",(chunk)=>{
    let str=chunk.toString();
    for(let i=0;i<str.length;i++){
        if (chatArray[str[i]]==undefined) {
            chatArray=1;
        }else{
            chatArray+=1;
        }
    }
})

